/*
题目描述：

你有一个字符串t，它由n个字母组成。

定义一个字符串s的子串为s[l...r]，表示从位置l到r构成的一个新的串。

你的目标是构造一个字符串s，使得它的可能长度最小，要求s中存在k个位置i,可以找到k个以i为出发点的子串t。

输入： 第一行输入两个整数n和k，表示t的长度和需要k个子串

第二行输入字符串t

输出：

输出满足条件的长度最小的s。题目保证答案唯一。

输入输出样例
输入 #1
3 4
aba
输出 #1
ababababa
输入 #2
3 2
cat
输出 #2
catcat


思路：
KMP求出最长前缀，输出单个字符串，再输出k-1个前缀后的字符串
*/

#include<bits/stdc++.h>
using namespace std;
char ms[100];
int n;
int ne[100];

void buildnext()
{
    ne[0]=-1;
    for(int i=0,j=-1;ms[i];)
    {
        if(j==-1||ms[i]==ms[j])
        {
            ne[++i]=++j;
        }
        else j=ne[j];
    }
}
int main()
{
    int k;
    cin >> n >> k;
    scanf("%s",ms);
    buildnext();
    int st=ne[n];
    printf("%s",ms);
    for(int i=0;i<k-1;i++)
    {
        for(int i=ne[n];i<n;i++)
            printf("%c",ms[i]);
    }
    return 0;
}